==Existing boards==

* sabrelite https://wiki.linaro.org/Boards/MX6QSabreLite
* SabreSD:  http://www.freescale.com/webapp/sps/site/taxonomy.jsp?code=IMX6X_SERIES
* $89 Hiapad Hi802 Android mini PC Based on Freescale i.MX6 Quad Processor http://www.cnx-software.com/2012/10/17/89-hiapad-hi802-android-mini-pc-based-on-freescale-i-mx6-quad-processor/
* phyFLEX®-i.MX6 http://phytec.com/products/system-on-modules/phyflex/i.mx6/
* Tiny COM runs Linux, Android on quad-core i.MX6 http://linuxgizmos.com/compulab-imx6-quad-core-com-runs-linux-and-android/
* imx6 Rex http://www.imx6rex.com/

==Ariaboard imx6==

===Key BOM components===
*freescale i.mx6 Dual, DualLite, Quad
*ddr3 x4
*eMMC
*TLV320AIC3106 / wolfson 8962e
*PMIC
*Atheros PHY

===Total Cost===
*pmu $2.5
*i.mx6 dual lite $12/dual $15/$quad $22

===heat sink consideration===
different reliability levels of imx6 comes with different cpu packaging, and therefore different height from the bottom of the board


===u-boot===
 dd if=u-boot.imx of=/dev/sdX bs=512 seek=2

more params:
 https://wiki.linaro.org/Boards/MX6QSabreLite

===uboot args===
 setenv bootargs_mmc setenv bootargs ${bootargs} root=/dev/mmcblk0p2 rootwait rw video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24 video=mxcfb1:off video=mxcfb2:off fbmem=28M ip=dhcp

 setenv bootargs_mmc setenv bootargs ${bootargs} root=/dev/mmcblk0p2 rootwait rw video=mxcfb0:dev=hdmi,1024x768M@60; saveenv; boot

 setenv bootargs ${bootargs} root=/dev/mmcblk1p1 rootwait run bootargs_base bootargs_mmc; mmc dev 2; mmc read ${loadaddr} 0x800 0x2000; setenv video mxcfb0:dev=hdmi,1920x1080M@60; saveenv; bootm

===official uboot & kernel ===
# https://community.freescale.com/docs/DOC-95015
# https://community.freescale.com/docs/DOC-95017/version/16


===old version 3.0.35===
http://variwiki.com/index.php?title=VAR-SOM-MX6_Ubuntu_GS

====freescale kernel build====
 git clone git://git.freescale.com/imx/linux-2.6-imx.git
 cd linux-2.6-imx
 git checkout imx_3.10.17_1.0.0_ga
 make imx_v7_defconfig
 make -j16 uImage LOADADDR=0x10008000
 make -j16 modules
 make imx6q-sabresd.dtb


official kernel problem with reboot: (failed to reboot)
 mxc_restart: Watchdog reset failed to assert reset

===additional read imx6 uboot and kernel===
* https://community.freescale.com/thread/319906
* http://boundarydevices.com/cross-compile-i-mx6-kernel-using-ltib-toolchain/

===make a sd card (including latest uboot, kernel)===
http://www.eewiki.net/display/linuxonarm/i.MX6q+SABRE+Board+for+Smart+Devices

===lazy installation Robert Nelson===
for ubuntu install, use Robert Nelson's netinstall

 git clone https://github.com/RobertCNelson/netinstall.git
 sudo ./mk_mmc.sh  --dtb imx6q-sabresd --distro raring --mmc /dev/sdd


=== fast booting===
https://community.freescale.com/docs/DOC-93619

0.58sec: http://www.elinux.org/images/d/d1/Alexandre_Belloni_boottime_optimizations.pdf

==Ariaboard imx6 debugging==

==Hardware Debug==
ref: http://www.imx6rex.com/software/imx6-rex-basic-hw-verification-tests/

===sabresd bootconf===
 SD         01000101
 EMMC       11011101
 DOWNLOADER 00000001

===boot configs===
{| width="1000" cellspacing="1" cellpadding="1" border="1"
|+ Boot mode
|-
| Boot device
| boot mode1
| boot mode0
| 8
| 7
| 6
| 5
| 4
| 3
| 2
| 1
|-
| 
| 
| 
| BT_CFG 1_7
| BT_CFG 1_6
| BT_CFG 1_5
| BT_CFG 1_4
| BT_CFG 2_6
| BT_CFG 2_5
| BT_CFG 2_4
| BT_CFG 2_3
|-
| Serial Download
| 0
| 1
| 0
| 0
| 1
| 1
| 0
| 0
| 0
| 0
|-
|}

===cpu===

 root@arm:~# 7za b 10231
 7-Zip (A) 9.20  Copyright (c) 1999-2010 Igor Pavlov  
 2010-11-18p7zip Version 9.20 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,4 CPUs)
 RAM size:     999 MB,  # CPU hardware threads:   4
 RAM usage:    850 MB,  # Benchmark threads:      4
 Dict        Compressing          |        Decompressing      
       Speed Usage    R/U Rating  |    Speed Usage    R/U Rating
        KB/s     %   MIPS   MIPS  |     KB/s     %   MIPS   MIPS
 22:    1415   295    467   1377  |    32708   369    800   2951
 23:    1371   288    485   1397  |    34368   390    807   3145
 24:    1397   302    497   1502  |    33696   387    807   3126
 25:    1385   308    513   1581  |    29002   381    716   2727

====cpu overclocking====
read: http://nixdev.com/?p=365

====CPU temperture====
 cat /sys/devices/virtual/thermal/thermal_zone0/temp

====Read Unique ID (UID)====

 cat /sys/fsl_otp/HW_OCOTP_CFG0 #First word of UID
 cat /sys/fsl_otp/HW_OCOTP_CFG1 #Second word of UID

===vpu===
https://community.freescale.com/servlet/JiveServlet/download/397728-273951/i.MX5x_Linux_VPU_API.pdf

===gpu===


===DDR Calibration===
guide: http://www.imx6rex.com/software/how-to-run-ddr3-calibration-on-imx6/
official pdf: http://cache.freescale.com/files/32bit/doc/app_note/AN4467.pdf

===sata===
recognize by default insert(tested with laptop hdd and ssd)

===Gigabit Nic===

====Set default MAC address====
<font color=red>Warning! Once the address is set, it cannot be changed any more!</font>

Write MAC value into file below:

/sys/fsl_otp/HW_OCOTP_MAC0 #(low 32 bits)

/sys/fsl_otp/HW_OCOTP_MAC1 #(high 16 bits)

e.g: Set e6:b8:a8:fb:8b:0e as MAC:

 echo 0xE6B8 > /sys/fsl_otp/HW_OCOTP_MAC1
 echo 0xA8FB8B0E > /sys/fsl_otp/HW_OCOTP_MAC0

====throughput test====
average http download 10GB file to intel ssd, speed can reach
 
 100%[===================================>] 10,689,893,531 31.4MB/s   in 5m 26s


====ping loss test====
10k packets sent via flood ping, zero loss

 root@arm:/mnt# ping  -f 192.168.8.5 
 PING 192.168.8.5 (192.168.8.5) 56(84) bytes of data. 
 .^C 
 --- 192.168.8.5 ping statistics --- 
 93864 packets transmitted, 93864 received, 0% packet loss, time 32763ms 
 rtt min/avg/max/mdev = 0.107/0.213/36.267/0.377 ms, pipe 3, ipg/ewma 0.349/0.16s

===hdmi===
on the very early stage of hardware debugging, we had reversed connector, resulting first pin to last pin.

===lvds===
# https://community.freescale.com/thread/311129

===audio===
audio is recognized by default

===emmc===
We can see our emmc devices, Questions for answer:
*https://community.freescale.com/thread/323746
*http://www.eewiki.net/display/linuxonarm/i.MX6q+SABRE+Board+for+Smart+Devices+Comments?focusedCommentId=32964762#comment-32964762

===usb host===
working by default (but key/mouse only working with official fsl kernel)

===camera===
https://www.raspberrypi.org/help/camera-module-setup/

http://elinux.org/Rpi_Camera_Module

===i2c===

===eeprom===

===infrared===

==software==

===yocto===
*fsl yocto guide: https://github.com/Freescale/fsl-community-bsp-platform
*fsl yocto main page: https://community.freescale.com/docs/DOC-1616
*yocto tutorial: https://community.freescale.com/servlet/JiveServlet/previewBody/95096-102-10-7847/yocto_tutorial.pdf
*bitbake commands: https://community.freescale.com/docs/DOC-94953
*freescale bsp http://freescale.github.io/
*imx6rex guide: http://www.imx6rex.com/software/how-to-start-with-yocto/

===1080p resolution issue===
https://community.freescale.com/thread/323327

=== ubuntu with vpu and gpu drivers ===
https://community.freescale.com/docs/DOC-95185

==Android==

preinstalls:
 
 sudo apt-get update
 sudo apt-get -y install git uuid uuid-dev zlib1g-dev liblz-dev liblzo2-2 liblzo2-dev lzop curl u-boot-tools p7zip-full byobu htop


===4.4.3===
j2se 6:
http://variwiki.com/index.php?title=VAR-SOM-MX6_Android_GS-java

*variwiki: http://variwiki.com/index.php?title=VAR-SOM-MX6_Android_KK2_R01
* all android docs and dl: http://www.freescale.com/products/arm-processors/i.mx-applications-processors-based-on-arm-cores/i.mx-6-processors/i.mx6qp/android-os-for-i.mx-applications-processors:IMXANDROID?code=IMXANDROID&nodeId=012FC8ZrDRB24A4117&fpsp=1&tab=Documentation_Tab


==== sun java 1.6 required for imx6 kk4.4.3 ====


 wget tx3.piza.cc/jdk-6u45-linux-x64.bin
 chmod a+x jdk-6u45-linux-x64.bin
 ./jdk-6u45-linux-x64.bin
 mv jdk1.6.0_45 /opt
 echo 'export PATH=/opt/jdk1.6.0_45:$PATH' >> ~/.bashrc
 export PATH=/opt/jdk1.6.0_45:$PATH

====get source====
 cd ~ && mkdir -p bin && mkdir imx6_android_kk4.4.3
 curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
 chmod a+x ~/bin/repo
 cd ~/imx6_android_kk4.4.3
 ~/bin/repo init -u https://android.googlesource.com/platform/manifest -b android-4.4.3_r1
 ~/bin/repo sync -j2

====get kernel + u-boot====
 cd ~/imx6_android_kk4.4.3
 git clone git://git.freescale.com/imx/linux-2.6-imx.git kernel_imx
 git checkout kk4.4.3_2.0.0-ga

 cd ~/imx6_android_kk4.4.3/bootable/bootloader
 git clone git://git.freescale.com/imx/uboot-imx.git uboot-imx 
 cd uboot-imx
 git checkout kk4.4.3_2.0.0-ga

====patching====
 cd /opt
 wget tx3.piza.cc/imx6_android/android_KK4.4.3_2.0.0-ga_core_source/code/KK4.4.3_2.0.0-ga.tar.gz
 tar -xvf KK4.4.3_2.0.0-ga.tar.gz
 cd ~/imx6_android_kk4.4.3
 source /opt/android_KK4.4.3_2.0.0-ga_core_source/code/KK4.4.3_2.0.0-ga/and_patch.sh
 c_patch /opt/android_KK4.4.3_2.0.0-ga_core_source/code/KK4.4.3_2.0.0-ga imx_KK4.4.3_2.0.0-ga


if ok:


 ************************************************************** 
 Success: Now you can build the Android code for FSL i.MX platform 
 **************************************************************


====build====
 cd ~/imx6_android_kk4.4.3

 source build/envsetup.sh lunch sabresd_6dq-eng export BUILD_TARGET_DEVICE=SD make 2>&1 | tee build_sabresd_6dq_android.log



===other verions and dls===
* sabresd dl: http://www.freescale.com/products/arm-processors/i.mx-applications-processors-based-on-arm-cores/i.mx-6-processors/i.mx6qp/sabre-platform-for-smart-devices-reference-design-based-on-the-i.mx-6-series:RDIMX6SABREPLAT?fpsp=1&tab=Documentation_Tab


====Android 8.0 with repo====

Get full source package from smb://192.168.8.30/share/imx6/Android/src/android-imx-8.0.tar.gz, extract it into a directory as your work place.
Be sure you have installed packages below (require root privilege):

 apt-get install uuid uuid-dev zlib1g-dev liblz-dev liblzo2-2 liblzo2-dev lzop git-core curl u-boot-tools mtd-utils android-tools-fsutils openjdk-8-jdk

Change directory into android_build, and use commands below:

 export LC_ALL=C
 source build/envsetup.sh
 lunch sabresd_6dq-user

If you want to enable debug mode, use sabresd_6dq-userdebug in lunch command instead.

Then use make command to build system images, images will be generated in out/target/product/sabresd_6dq.

If you want to rebuild u-boot or kernel, use commands below:
 ./clean6dqbootimg.sh
 make bootimage && make recoveryimage && make

U-boot source directory is vendor/nxp-opensource/uboot-imx, and kernel is vendor/nxp-opensource/kernel_imx. You can replace them with your own. But if you want to use different defconfig file or device tree, you may need to edit device/fsl/sabresd_6dq/BoardConfig.mk.

==etc info==


==overclocking==
http://www.udoo.org/forum/udoo-mx6-overclocked-2ghz-t596.html
https://community.freescale.com/thread/314572


===key benefits===
* existing lvds, existing HDMI
* mipi, csi interfaces for camera
* consumer levels, industrial levels and automobile levels.
* sata connection.
* hardware accelerated video encoding/decoding

==Aimx6 Coreboard Hardwire Error==
===A3===
[[File:Imx6 a3 fixup.jpg|500px|right]]
1. AR8035 的配置电阻和AR8031不同，需要修改：
 MODE[3:0] Description
 1100 RGMII, PLLOFF, INT;
 1110 RGMII, PLLON, INT;
 Others Reserved

 MODE3 -> RXD3
 MODE2 -> LED_1000
 MODE1 -> RXD2
 MODE0 -> RX_DV
 
 RX_CLK 1.8V/1.5V Select the RGMII/RMII I/O voltage level
 1: 1.8V I/O
 0: 1.5V I/O
 
 需要修改配置电阻如下:
 R141移到R148；R146,R631去掉。



===SA3===

==Temperature sensor==

/sys/devices/w1_bus_master1/28-*/w1_slave

 cat /sys/devices/w1_bus_master1/28-800000035d06/w1_slave

==boards==
[[Actia test board]]